はじめての設計をやり抜くための本 第 2 版
著 : 吉原庄三郎
キーワード : 設計、ソフトウェア設計
発行年 : 2022 年
https://m.media-amazon.com/images/P/B09T2NSJS7.01._SCLZZZZZZZ_SX500_.jpg
Amazon : https://amzn.to/3E49ViM
対象読者 : システム開発に携わる若手エンジニア
本書のテーマである設計の範囲は、ソフトウェア設計とソフトウェアアーキテクチャ設計
感想
学ぶことはあるが、全体的に体系だっておらず、めちゃくちゃいい本というわけではない
話の流れが汲み取れない部分も多い (内部設計の話の中でテストの話をするとか)
設計というものをなんとなく把握できている人が、その解像度を上げたり情報を得るために読むのは良いと思う
本書の内容を鵜吞みにせず、あくまで参考にする書籍のひとつ程度の感覚で
1 章 はじめての設計をやり抜くために
設計をやり抜くために必要なこと
設計の目的を正確に把握すること
設計を行うために最低限必要なテクニックを知ること
正常なコミュニケーションを取ること
設計を行うために最低限必要な知識
ユースケース
概念モデル
データベース設計
アーキテクチャ設計
エンジニアの価値を明確に評価するのは難しい
エンジニアの価値を評価できない = システムの価値を評価できない
プログラミングを中心とするシステム開発は低付加価値なのか、高付加価値なのか?
低付加価値な部分はツールやフレームワークが担ってくれる
プログラマに要求されるのはもっとクリエイティブな部分
モチベーションと生産効率や成功には関係があるという考え方もある
『ピープルウエア 第 3 版』 で、人間本位のシステム開発を行うことが推奨されている
IT 業界における一般的な職種
品質をつくり込むということ
ソフトウェアエンジニアのキャリアパス
2 章 設計の目的
IT システムにおける設計
アーキテクチャという言葉は 「設計の基本構造」 という意味
アプリケーション開発者にとって重要なアーキテクチャ
アプリケーションアーキテクチャ
ソフトウェアアーキテクチャ
システムアーキテクチャ
開発プロジェクト
プロジェクトマネジャーがプロジェクトの計画・実行の総責任者 (PMBOK)
大規模プロジェクト
プロジェクトを分割してプロジェクトリーダーを配置することもある
PMO (Project Management Office) を設置
最近はアーキテクトを配置することも多くなった
設計は、プログラマやプロジェクトリーダー、システムエンジニア、アーキテクトが行う
開発プロセス
開発プロセスと設計は密接に関連している
流派は 3 つ
ウォーターフォール開発
オブジェクト指向開発 (スパイラル開発)
Rational Unified Process (RUP) など
nobuoka.icon こんな表現初めて聞いたな
アジャイル開発
設計の入力となる要件定義の成果物は何で、どんな期間で、どんな出力を出すのか、を設計担当者は確認すること
設計の目的
設計は外部設計と内部設計にわかれる
PMBOK で紹介される 9 つの見積り方法 → 見積り方法の種類
『人月の神話 【新装版】』
ブルックスの法則
IT システムのテストの種類
3 章 外部設計の手法
外部設計
要件定義や外部設計を行うためには業務知識が必要
nobuoka.icon 業務知識 = ドメイン知識 かな
非機能要件とシステム設計
非機能要件定義の内容を踏まえてシステムインフラ設計
4 章 内部設計の手法
内部設計
テストと設計
TDD
リファクタリング
『リファクタリング 既存のコードを安全に改善する (第 2 版)』 が参考になる
開発環境
開発標準
5 章 アーキテクチャの目的
アーキテクチャ
6 章 アーキテクチャ設計のアプローチ
アーキテクチャ設計
DRY (DRY 原則) や Once And Only Once
設計とトレーサビリティ
依存性の注入 (依存注入 : DI)
AOP
マイクロサービス
単一責任原則 (Single Responsibility Principle) をコンポーネントにあてはめると閉鎖性共通の原則 (The Common Closure Principle)
7 章 本当に設計は必要か
アジャイル開発が広がる中で、設計が不要だという人も、やはり必要だと考える人もいる
それぞれ自身の経験で判断しているように見える (設計が不要な簡単なプロジェクトを経験してきた人は不要だと言う)
アジャイル開発でも、文書を全く書かないとは言っていない
Martin Fowler の 「Is Design Dead?」
#書籍 #文献